﻿namespace K9Nano.Updater;

/// <summary>
/// 更新接口
/// </summary>
public interface IUpdateManager
{
    /// <summary>
    /// 获取可用的更新版本
    /// </summary>
    /// <returns>可用的更新版本。为空时，不需要更新</returns>
    Task<AvailableVersion?> GetAvailableVersionAsync(CancellationToken cancellation = default);

    /// <summary>
    /// 更新
    /// </summary>
    /// <param name="progressReporter">更新进度报告</param>
    /// <returns>为true时，表示更新成功</returns>
    Task<bool> TryUpdateAsync(Action<double> progressReporter, CancellationToken cancellation = default);
}
